/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package DAO;

import LogicaNegocio.*;
import Fachada.Fachada;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author GEMA
 */
public class DAOLogin {
    Fachada fachada;

    public DAOLogin() {
        fachada = new Fachada();
    }

    public int validarUsuario(String usuario, String password) {
        String sql_seleccionar;
        sql_seleccionar="SELECT password, perfil FROM Login WHERE usuario ='"+usuario+"'";

        try
        {
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia=conexion.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_seleccionar);
            
            while(tabla.next())
            {
               String contraseNa = tabla.getString("password");
               
               if(contraseNa.equals(password))
               {
                   System.out.println("Usuario validado.");
                   return Integer.parseInt(tabla.getString("perfil"));
               }
               else
               {
                    System.out.println("contraseña incorrecta");
               }
            }
            conexion.close();
            return -1;
        }
        catch(SQLException e)
        {
            System.out.println(e);
            return -1;
        }
    }

    public int ingresar(Empleado elEmpleado) {
        String sql_guardar;
        sql_guardar = "INSERT INTO Login VALUES('" + elEmpleado.getCcEmpleado() + "', " +
                "'" + elEmpleado.getNombreEmpleado().charAt(0) + elEmpleado.getCcEmpleado() + "'";

        String departamento = elEmpleado.getDepartamento().getNombreDepartamento();
        int perfil = 0;
        if(departamento.equals("Servicio al Cliente")) {
            if(elEmpleado instanceof JefeDeArea) {
                perfil = 1;
            }
            else {
                perfil = 4;
            }
        }
        else if(departamento.equals("Ventas")) {
            if(elEmpleado instanceof JefeDeArea) {
                perfil = 2;
            }
            else {
                perfil = 5;
            }
        }
        else if(departamento.equals("Mercadeo")) {
            perfil = 3;
        }
        sql_guardar += ", " + perfil + ")";

        try
        {
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia=conexion.createStatement();
            int numFilas= sentencia.executeUpdate(sql_guardar);
            conexion.close();
            return numFilas;
        }
        catch(SQLException e)
        {
            System.out.println(e);
        }
        catch(Exception e)
        { System.out.println(e);
        }
        return -1;
    }

    public void cambiarPerfilJefe(String cedulaAntiguoJefe, Empleado nuevoJefe) {

        String departamento = nuevoJefe.getDepartamento().getNombreDepartamento();
        int perfilNuevoJefe = 0;
        int perfilAntiguoJefe = 0;
        if(departamento.equals("Servicio al Cliente")) {
            perfilNuevoJefe = 1;
            perfilAntiguoJefe = 4;
        }
        else if(departamento.equals("Ventas")) {
            perfilNuevoJefe = 2;
            perfilAntiguoJefe = 5;
        }
        else if(departamento.equals("Mercadeo")) {
            perfilNuevoJefe = 3;
            perfilAntiguoJefe = -1;
        }

        String sql_updateAntiguoJefe = "UPDATE Login " +
                                        "SET perfil = " + perfilAntiguoJefe +
                                        " WHERE usuario = '" + cedulaAntiguoJefe + "'";
        
        String sql_updateNuevoJefe = "UPDATE Login " +
                                     "SET perfil = " + perfilNuevoJefe +
                                     " WHERE usuario = '" + nuevoJefe.getCcEmpleado() + "'";

        try
        {
            Connection conexion = fachada.ConexionBaseDatos();
            Statement sentencia = conexion.createStatement();
            int numFilas = sentencia.executeUpdate(sql_updateAntiguoJefe);
            conexion.close();

            conexion = fachada.ConexionBaseDatos();
            sentencia = conexion.createStatement();
            numFilas = sentencia.executeUpdate(sql_updateNuevoJefe);
            conexion.close();
            
        }
        catch(SQLException e)
        {
            System.out.println(e);
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }

    public int actualizarContraseNa(String login, String nuevaContraseNa)
    {
        String sql_modificar;
        sql_modificar = "UPDATE Login "+
                        "SET password = '" + nuevaContraseNa + "' " +
                        "WHERE usuario = '" + login+ "'";

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            int numFilas = sentencia.executeUpdate(sql_modificar);
            conn.close();
            return numFilas;
        }
        catch(SQLException e){System.out.println(e); }
        catch(Exception e){System.out.println(e); }
        return -1;
    }
}
